10c5b353de5ac91bac86e73ff55762a9ae316fa2,java/src/main/java/net/razorvine/serpent/Parser.java,Parser,parseComplex,#SeekableStringReader#,421

Before Change


			} catch (NumberFormatException x) {
				throw new ParseException("invalid float format", x);
			}
			sr.rewind(1); // rewind the +/-
			double imaginarypart = parseImaginaryPart(sr);
			if(sr.read()!=')')
				throw new ParseException("expected ) to end a complex number");

After Change


			{
				numberstr = sr.readUntil("+-");
			}
			sr.rewind(1); // rewind the +/-
			
			// because we're a bit more cautious here with reading chars than in the float parser,
			// it can be that the parser now stopped directly after the 'e' in a number like "3.14e+20".